Omet navegació

14.2.- Recollida de dades en format TXT.

Per passar les dades a un fitxer txt (o CSV) cal definir la impressora «PrintWriter eixidatext; » en la secció de definir llibreries a importar. També cal posar dins d'un condicional les ordres per tancar el fitxer que estem escrivint i tancar el programa que són:

eixidatext.close();  // tanca el fitxer
exit();//i atura el programa 

També cal escriure el fitxer amb el mètode  «eixidatext.println(variables);» com és mostra a l'exemple de baix.

Després d'escriure una línia cal passar més dades al fitxer de text amb el mètode «eixidatext.flush();»

 

El programa per recollir les dades de temperatura en un fitxer en format csv (txt) és aquest.

 

// Copyright (C) 2010 MODAT7
// Modificat el 26-04-2013 per Carles Ferrando
// License: GNU GPL ( http://www.gnu.org/licenses/gpl.html )
// En aquest programa llegirem el valor d'un NTC i estimarem el seu valor en graus centígrads
// amb el mètode de Steinhart–Hart per després mostrar els valors de la TºC en un documentt txt (CSV)
//
//importem les llibreries de comunicació per port serie
//i la firmata d'arduino per arduino i la impressora electrònica
import processing.serial.*;
import cc.arduino.*;
PrintWriter eixidatext;

//Clase arduino que representa la targeta Arduino
Arduino arduino;

//Definició de coeficients i constants
float Ventrada=5.0;  // [V] Tensió d'entrada al divisor de tensió
float Rauxiliar=10000; // [ohm] Resistència secundaria al divisor de tensió.
float R0=10000;  // [ohm] Valor de NTC nominal a 25ºC
float T0=298.15; // [K] (25ºC) Valor en ºK de 25ºC
float beta=3891; // [K] Paràmetre B
float Rinfinit=0.0214906446; // [ohm] Paràmetre Rinfinit

//Definició de variables
float Veixida=0.0; // [V] Tensió donada pel divisor de tensió
float RNTC=0.0; // [ohm] Resistència del NTC
float TempK=0.0;// [K] Temperatura d'eixida en Kelvin
float TempC=0.0;// [ºC] Temperatura d'eixida en Celsius
int pinNTC = 3; // selecciona el pin d'entrada per al sensor de calor
int LecturaNTC=0 ;// El valor analògic llegit pel sensor al pin NTC
float x=0;//comptador de punts inicials.

// Configuració de paràmetres i ports d'entrada i eixida
void setup() {

  // Crea un fitxer nou al directori de sketchbook junt a aquest programa
  eixidatext = createWriter("TempCtxt.csv"); 

  //L'objecte arduino cal crear-lo en primer lloc abans de llegir altre cap port
  arduino = new Arduino(this, Arduino.list()[0], 57600);
 
  //una vegada creat ja puc llegir altres ports (pins)  
  arduino.pinMode(LecturaNTC, Arduino.INPUT); 
}

//Programa principal al bucle
void draw()
{ // Hui és 26 d'abril de 2013 i si és l'hora acordada
// Cal canviar la data i hora d'aturar el programa
 if ( day()==26 && month()==04 && hour()==19 && minute()==57){
   eixidatext.close();  // tanca el fitxer
   exit();//i atura el programa 
}
  int LecturaNTC =  arduino.analogRead(pinNTC); //llegeix valors analògics des del sensor posat al port
  Veixida=Ventrada*((LecturaNTC)/1024.0); //Càlcul del valor de voltatge del NTC ara
  RNTC=(Rauxiliar*Veixida/(Ventrada-Veixida)); //Càlcul del valor la Resistència del NTC ara 
  TempK=(beta/log(RNTC/Rinfinit));   //Càlcul de la temperatura estimada de SteinHart-Hart en Kelvins
  TempC=TempK-273.15;   //Càlcul de la temperatura estimada en Centígrads
  println ("T (C)=" + TempC ); //Imprimeix al terminal T en C
  println ("T (K)=" + TempK ); //Imprimeix al terminal T en K
  delay(1000);//aturem el programa 1000 ms i després fem una lectura
  x=x+1;//comptador dades
  
  // Escriu dades al txt
  if (x>2){//fins que no hi ha dos punts no podem calcular un valor real ni escriure'l
  //fila dades
  eixidatext.println(day() + "/" + nf(month(),2) + "/" + year() + " " + hour() + ":" +nf(minute(),2)+ ":"+second() + " "+ ";" + " " + TempC);
  }
  eixidatext.flush();  // Escriu la resta de dades al fitxer
}


La eixida d'aquest programa és un fitxer de text en format csv que podem obrir amb LibreOffice Calc per representar les dades o fer càlculs i regressions línials. 

 Obri el fitxer csv generat emb el Gedit, Kate, Notepad i canvia el símbol punt «.» per una «,» coma com es veu en la imatge.

Cerca i reemplaça

A continuació importes el fitxer CSV amb el LibreOffice calc com es veu a la imatge.

importa csv

I ja pots crear una gràfica amb les dades importades per fer anàlisis de regressió lineal o altres anàlisis estadístics.

Gràfica de temperatura en Libreoffice